package main

import (
	"errors"
	"flag"
	"log"
	"os"
	"path/filepath"
	"shen/gotask/rocketmq/config"
	rocketDriver "shen/gotask/rocketmq/driver"
)

func main() {
	//构建命令：go build -o ./../bin/rocketmq5 rocketmq/main.go
	path, err := getConfigFilePath()
	if err != nil {
		log.Fatalln(err.Error())
	}

	var model = &config.Model{}
	err1 := model.LoadConfig(path)
	if err1 != nil {
		log.Fatalln(err1.Error())
	}

	driver := &rocketDriver.Driver{}
	driver.Run()
}

func getConfigFilePath() (string, error) {
	//第一个参数是设计的参数命令，第二个参数是默认值，第三个是提示或者描述信息，解析得到的结果是一个具体的路径的指针
	path := flag.String("config", "", "请输入配置文件")
	flag.Parse() //调用这个函数后才会去真正的解析

	//如果没有获取到用户输入的路径，我们可以使用golang中的方法去获取当前项目的目录下的config文件夹的具体路径
	if *path == "" {
		//dir := "./../config/config.yml"
		dir := "./../publish/config.yml"
		absDir, err := filepath.Abs(dir)
		if err != nil {
			return "", errors.New("golang配置文件未找到")
		}
		*path = absDir
	}
	_, err := os.Stat(*path)
	if err != nil {
		return "", errors.New("golang配置文件未找到")
	}
	return *path, nil
}
